#pragma once
#include "EngineObject.h"

class ISerializerWriteContext : public virtual EngineObject
{
public:
	virtual void StartItem(char* name, char* type, char* version) = 0;
	virtual void StartItem(char* name) = 0;
	virtual void EndItem(char* name) = 0;
	
	virtual void SerializeProperty(char* name, bool value) = 0;
	virtual void SerializeProperty(char* name, signed char value) = 0;
	virtual void SerializeProperty(char* name, unsigned char value) = 0;
	virtual void SerializeProperty(char* name, signed short int value) = 0;
	virtual void SerializeProperty(char* name, unsigned short int value) = 0;
	virtual void SerializeProperty(char* name, signed long int value) = 0;
	virtual void SerializeProperty(char* name, unsigned long int value) = 0;
	virtual void SerializeProperty(char* name, float value) = 0;
	virtual void SerializeProperty(char* name, double value) = 0;
	virtual void SerializeProperty(char* name, long double value) = 0;
	virtual void SerializeProperty(char* name, signed long long int value) = 0;
	virtual void SerializeProperty(char* name, unsigned long long int value) = 0;
	virtual void SerializeProperty(char* name, char* value) = 0;
};
